home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume8 / xinvaders / patch1 < prev    next >
Encoding:
Internet Message Format  |  1990-08-10  |  16.6 KB

  1. Path: uunet!decwrl!elroy.jpl.nasa.gov!lll-winken!sun-barr!newstop!sun!parc.xerox.com
  2. From: jgoldman@parc.xerox.com (Jonny Goldman)
  3. Newsgroups: comp.sources.x
  4. Subject: v08i068:         xinvaders -- space invaders for X, Patch1, Part01/01
  5. Message-ID: <140487@sun.Eng.Sun.COM>
  6. Date: 10 Aug 90 18:27:22 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 543
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: Jonny Goldman <jgoldman@parc.xerox.com>
  12. Posting-number: Volume 8, Issue 68
  13. Archive-name: xinvaders/patch1
  14. Patch-To: xinvaders: Volume 8, Issue 62-66
  15.  
  16. Here's the first round of patches to the game.  They aren't really
  17. bug-fixes, but rather small enhancements.  There are basically three
  18. patches:
  19.  
  20. 1.  To allow users to compile with X11R3
  21. 2.  expanding the images of the invaders by 1 bit and eliminating the erase
  22.     to improve performance (thus allowing it to run on slower machines, like
  23.     Sun 3's).
  24. 3.  To allow the specification of a bitmap directory in the Xresources.
  25.     For example:
  26.  
  27.      Vaders*BitmapDirectory:            /usr/local/xgames/xinvaders/
  28.  
  29.     The trailing `/' is important, and `"' should not be used (unless you
  30.     really mean it).
  31.  
  32. The files that have changed are:
  33.  
  34. diff -c xinvaders.old/Makefile xinvaders/Makefile
  35. diff -c xinvaders.old/base.c xinvaders/base.c
  36. diff -c xinvaders.old/main.c xinvaders/main.c
  37. diff -c xinvaders.old/patchlevel.h xinvaders/patchlevel.h
  38. diff -c xinvaders.old/shot.c xinvaders/shot.c
  39. diff -c xinvaders.old/spacers.c xinvaders/spacers.c
  40. diff -c xinvaders.old/vader1a.bit xinvaders/vader1a.bit
  41. diff -c xinvaders.old/vader1b.bit xinvaders/vader1b.bit
  42. diff -c xinvaders.old/vader2a.bit xinvaders/vader2a.bit
  43. diff -c xinvaders.old/vader2b.bit xinvaders/vader2b.bit
  44. diff -c xinvaders.old/vader3a.bit xinvaders/vader3a.bit
  45. diff -c xinvaders.old/vader3b.bit xinvaders/vader3b.bit
  46. diff -c xinvaders.old/vaders.c xinvaders/vaders.c
  47. diff -c xinvaders.old/vaders.h xinvaders/vaders.h
  48. diff -c xinvaders.old/widget.c xinvaders/widget.c
  49. diff -c xinvaders.old/xinvaders.ma xinvaders/xinvaders.ma
  50.  
  51. It looks like the whole thing, but it's really only minor stuff.  Here's
  52. the entire context diff:
  53.  
  54. -------------------------Cut Here and use patch----------------------------
  55.  
  56. diff -c xinvaders.old/Makefile xinvaders/Makefile
  57. *** xinvaders.old/Makefile    Wed Aug  1 13:42:33 1990
  58. --- xinvaders/Makefile    Tue Aug  7 10:29:23 1990
  59. ***************
  60. *** 1,6 ****
  61. ! CFLAGS        = -g -I/import/X11R4/include -L/import/X11R4/lib
  62.   
  63. ! CC        = cc
  64.   
  65.   LIBS = -lXaw -lXt -lXmu -lX11
  66.   
  67. --- 1,9 ----
  68. ! # this is for my particular setup
  69. ! CFLAGS        = -O -I/import/X11R4/include -L/import/X11R4/lib
  70. ! # if you're using X11/R3, add this define
  71. ! #CFLAGS        = -DX11R3
  72.   
  73. ! CC        = cc 
  74.   
  75.   LIBS = -lXaw -lXt -lXmu -lX11
  76.   
  77. diff -c xinvaders.old/base.c xinvaders/base.c
  78. *** xinvaders.old/base.c    Wed Aug  1 13:14:39 1990
  79. --- xinvaders/base.c    Tue Aug  7 11:16:08 1990
  80. ***************
  81. *** 46,55 ****
  82.   {
  83.     unsigned int width, height;
  84.     int x_hot, y_hot;
  85. !   char *data;
  86.     int i, status;
  87.   
  88. !   status = XmuReadBitmapDataFromFile ("base.bit",
  89.                         &width, &height, &data,
  90.                         &x_hot, &y_hot);
  91.   
  92. --- 46,57 ----
  93.   {
  94.     unsigned int width, height;
  95.     int x_hot, y_hot;
  96. !   char *data, filename[255];
  97.     int i, status;
  98.   
  99. !   sprintf(filename, "%sbase.bit", bitdir);
  100. !   status = XmuReadBitmapDataFromFile (filename,
  101.                         &width, &height, &data,
  102.                         &x_hot, &y_hot);
  103.   
  104. ***************
  105. *** 69,75 ****
  106.     base->shape_image->bitmap_bit_order = LSBFirst;
  107.     base->shape_image->byte_order = LSBFirst;
  108.   
  109. !   status = XmuReadBitmapDataFromFile ("explode.bit",
  110.                         &width, &height, &data,
  111.                         &x_hot, &y_hot);
  112.   
  113. --- 71,79 ----
  114.     base->shape_image->bitmap_bit_order = LSBFirst;
  115.     base->shape_image->byte_order = LSBFirst;
  116.   
  117. !   sprintf(filename, "%sexplode.bit", bitdir);
  118. !   status = XmuReadBitmapDataFromFile (filename,
  119.                         &width, &height, &data,
  120.                         &x_hot, &y_hot);
  121.   
  122. diff -c xinvaders.old/main.c xinvaders/main.c
  123. *** xinvaders.old/main.c    Sun Aug  5 01:58:09 1990
  124. --- xinvaders/main.c    Tue Aug  7 11:07:26 1990
  125. ***************
  126. *** 15,23 ****
  127.   
  128.   #define MAIN
  129.   #include "vaders.h"
  130.   #include <X11/Xaw/Label.h>
  131.   #include <X11/Xaw/Paned.h>
  132.   static int width, height;        /* Size of window. */
  133.   
  134.   static XrmOptionDescRec table[] = {
  135. --- 15,28 ----
  136.   
  137.   #define MAIN
  138.   #include "vaders.h"
  139. + #ifndef X11R3
  140.   #include <X11/Xaw/Label.h>
  141.   #include <X11/Xaw/Paned.h>
  142. ! #else
  143. ! #include <X11/IntrinsicP.h>
  144. ! #include <X11/Label.h>
  145. ! #include <X11/VPaned.h>
  146. ! #endif
  147.   static int width, height;        /* Size of window. */
  148.   
  149.   static XrmOptionDescRec table[] = {
  150. ***************
  151. *** 31,36 ****
  152. --- 36,43 ----
  153.        (Cardinal)&height, XtRImmediate, (caddr_t) VHEIGHT},
  154.       {"debug", "Debug", XtRBoolean, sizeof(Boolean),
  155.        (Cardinal)&debug, XtRString, "off"},
  156. +     {"bitdir", "BitmapDirectory", XtRString, sizeof(String),
  157. +      (Cardinal)&bitdir, XtRString, (String)"./"},
  158.       {"basewait", "BaseWait", XtRInt, sizeof(int),
  159.        (Cardinal)&basewait, XtRImmediate, (caddr_t) 10},
  160.       {"vaderwait", "VaderWait", XtRInt, sizeof(int),
  161. ***************
  162. *** 135,149 ****
  163.       height = VHEIGHT;
  164.       args[0].value = (XtArgVal) width;
  165.       args[1].value = (XtArgVal) height;
  166.       pane = XtCreateWidget("pane", panedWidgetClass, toplevel,
  167.                 args, XtNumber(args));
  168.       XtManageChild(pane);
  169. -     scoreargs[0].value = (XtArgVal) scorepixel;
  170. -     scorewidget = XtCreateWidget("score", labelWidgetClass, pane,
  171. -                  scoreargs, XtNumber(scoreargs));
  172. -     /*
  173. -     XtManageChild(scorewidget);
  174. -     */
  175.       gamewidget = (VadersWidget)
  176.       XtCreateWidget("field", vadersWidgetClass, pane, NULL, 0);
  177.       XtManageChild(gamewidget);
  178. --- 142,155 ----
  179.       height = VHEIGHT;
  180.       args[0].value = (XtArgVal) width;
  181.       args[1].value = (XtArgVal) height;
  182. + #ifndef X11R3
  183.       pane = XtCreateWidget("pane", panedWidgetClass, toplevel,
  184.                 args, XtNumber(args));
  185. + #else
  186. +     pane = XtCreateWidget("pane", vPanedWidgetClass, toplevel,
  187. +                args, XtNumber(args));
  188. + #endif
  189.       XtManageChild(pane);
  190.       gamewidget = (VadersWidget)
  191.       XtCreateWidget("field", vadersWidgetClass, pane, NULL, 0);
  192.       XtManageChild(gamewidget);
  193.  
  194. diff -c xinvaders.old/patchlevel.h xinvaders/patchlevel.h
  195. *** xinvaders.old/patchlevel.h    Wed Aug  1 13:28:33 1990
  196. --- xinvaders/patchlevel.h    Tue Aug  7 11:24:58 1990
  197. ***************
  198. *** 13,16 ****
  199.   
  200.   /* patchlevel.h -- patchlevel for xinvaders */
  201.   
  202. ! #define PATCHLEVEL 0
  203. --- 13,23 ----
  204.   
  205.   /* patchlevel.h -- patchlevel for xinvaders */
  206.   
  207. ! #define PATCHLEVEL 1
  208. ! /* 
  209. !   added patches for X11R3 - from duncan@mips.com
  210. !   quicker vader updating - from koreth@ebay.sun.com
  211. !   and bitdir - the BitmapDirectory resource, courtesy of me.
  212. !   Tue Aug  7 1990
  213. ! */
  214.  
  215. diff -c xinvaders.old/shot.c xinvaders/shot.c
  216. *** xinvaders.old/shot.c    Tue Jul 17 14:17:09 1990
  217. --- xinvaders/shot.c    Tue Aug  7 10:52:27 1990
  218. ***************
  219. *** 202,212 ****
  220.   {
  221.     unsigned int width, height;
  222.     int x_hot, y_hot;
  223. !   char *data, filename[30];
  224.     int i, status;
  225.   
  226.     for (i = 0; i < 2; i++) {
  227. !     sprintf(filename, "sperm%s.bit", (i ? "b" : "a"));
  228.       status = XmuReadBitmapDataFromFile (filename,
  229.                       &width, &height, &data,
  230.                       &x_hot, &y_hot);
  231. --- 202,212 ----
  232.   {
  233.     unsigned int width, height;
  234.     int x_hot, y_hot;
  235. !   char *data, filename[255];
  236.     int i, status;
  237.   
  238.     for (i = 0; i < 2; i++) {
  239. !     sprintf(filename, "%ssperm%s.bit", bitdir, (i ? "b" : "a"));
  240.       status = XmuReadBitmapDataFromFile (filename,
  241.                       &width, &height, &data,
  242.                       &x_hot, &y_hot);
  243.  
  244. diff -c xinvaders.old/spacers.c xinvaders/spacers.c
  245. *** xinvaders.old/spacers.c    Tue Jul 17 14:17:20 1990
  246. --- xinvaders/spacers.c    Tue Aug  7 10:53:01 1990
  247. ***************
  248. *** 139,148 ****
  249.   {
  250.     unsigned int width, height;
  251.     int x_hot, y_hot;
  252. !   unsigned char *data;
  253.     int status;
  254.   
  255. !   status = XmuReadBitmapDataFromFile ("spacer.bit",
  256.                         &width, &height, &data,
  257.                         &x_hot, &y_hot);
  258.     if (status != BitmapSuccess) return status;
  259. --- 139,150 ----
  260.   {
  261.     unsigned int width, height;
  262.     int x_hot, y_hot;
  263. !   unsigned char *data, filename[255];
  264.     int status;
  265.   
  266. !   sprintf(filename, "%sspacer.bit", bitdir);
  267. !   status = XmuReadBitmapDataFromFile (filename,
  268.                         &width, &height, &data,
  269.                         &x_hot, &y_hot);
  270.     if (status != BitmapSuccess) return status;
  271.  
  272. diff -c xinvaders.old/vader1a.bit xinvaders/vader1a.bit
  273. *** xinvaders.old/vader1a.bit    Fri Jul 13 10:04:15 1990
  274. --- xinvaders/vader1a.bit    Tue Aug  7 10:02:35 1990
  275. ***************
  276. *** 1,4 ****
  277. ! #define vader1a_width 8
  278.   #define vader1a_height 8
  279.   static char vader1a_bits[] = {
  280. !    0x18, 0x3c, 0x7e, 0xdb, 0xff, 0x5a, 0x81, 0x42};
  281. --- 1,5 ----
  282. ! #define vader1a_width 10
  283.   #define vader1a_height 8
  284.   static char vader1a_bits[] = {
  285. !    0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xb6, 0x01, 0xfe, 0x01, 0xb4, 0x00,
  286. !    0x02, 0x01, 0x84, 0x00};
  287. diff -c xinvaders.old/vader1b.bit xinvaders/vader1b.bit
  288. *** xinvaders.old/vader1b.bit    Fri Jul 13 10:08:36 1990
  289. --- xinvaders/vader1b.bit    Tue Aug  7 10:02:35 1990
  290. ***************
  291. *** 1,4 ****
  292. ! #define vader1b_width 8
  293.   #define vader1b_height 8
  294.   static char vader1b_bits[] = {
  295. !    0x18, 0x3c, 0x7e, 0xdb, 0xff, 0x5a, 0x24, 0x42};
  296. --- 1,5 ----
  297. ! #define vader1b_width 10
  298.   #define vader1b_height 8
  299.   static char vader1b_bits[] = {
  300. !    0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xb6, 0x01, 0xfe, 0x01, 0xb4, 0x00,
  301. !    0x48, 0x00, 0x84, 0x00};
  302. diff -c xinvaders.old/vader2a.bit xinvaders/vader2a.bit
  303. *** xinvaders.old/vader2a.bit    Fri Jul 13 10:08:53 1990
  304. --- xinvaders/vader2a.bit    Tue Aug  7 10:02:35 1990
  305. ***************
  306. *** 1,5 ****
  307. ! #define vader2a_width 10
  308.   #define vader2a_height 8
  309.   static char vader2a_bits[] = {
  310. !    0x84, 0x00, 0x48, 0x00, 0xfc, 0x00, 0xb6, 0x01, 0xff, 0x03, 0xfd, 0x02,
  311. !    0x85, 0x02, 0x48, 0x00};
  312. --- 1,5 ----
  313. ! #define vader2a_width 12
  314.   #define vader2a_height 8
  315.   static char vader2a_bits[] = {
  316. !    0x08, 0x01, 0x90, 0x00, 0xf8, 0x01, 0x6c, 0x03, 0xfe, 0x07, 0xfa, 0x05,
  317. !    0x0a, 0x05, 0x90, 0x00};
  318. diff -c xinvaders.old/vader2b.bit xinvaders/vader2b.bit
  319. *** xinvaders.old/vader2b.bit    Fri Jul 13 10:09:04 1990
  320. --- xinvaders/vader2b.bit    Tue Aug  7 10:02:36 1990
  321. ***************
  322. *** 1,5 ****
  323. ! #define vader2b_width 10
  324.   #define vader2b_height 8
  325.   static char vader2b_bits[] = {
  326. !    0x84, 0x00, 0x49, 0x02, 0xfd, 0x02, 0xb7, 0x03, 0xfe, 0x01, 0xfc, 0x00,
  327. !    0x84, 0x00, 0x02, 0x01};
  328. --- 1,5 ----
  329. ! #define vader2b_width 12
  330.   #define vader2b_height 8
  331.   static char vader2b_bits[] = {
  332. !    0x08, 0x01, 0x92, 0x04, 0xfa, 0x05, 0x6e, 0x07, 0xfc, 0x03, 0xf8, 0x01,
  333. !    0x08, 0x01, 0x04, 0x02};
  334. diff -c xinvaders.old/vader3a.bit xinvaders/vader3a.bit
  335. *** xinvaders.old/vader3a.bit    Fri Jul 13 10:09:54 1990
  336. --- xinvaders/vader3a.bit    Tue Aug  7 10:02:36 1990
  337. ***************
  338. *** 1,5 ****
  339. ! #define vader3a_width 12
  340.   #define vader3a_height 8
  341.   static char vader3a_bits[] = {
  342. !    0xf0, 0x00, 0xfe, 0x07, 0xff, 0x0f, 0x67, 0x0e, 0xff, 0x0f, 0x9c, 0x03,
  343. !    0x66, 0x06, 0x0c, 0x03};
  344. --- 1,5 ----
  345. ! #define vader3a_width 14
  346.   #define vader3a_height 8
  347.   static char vader3a_bits[] = {
  348. !    0xe0, 0x01, 0xfc, 0x0f, 0xfe, 0x1f, 0xce, 0x1c, 0xfe, 0x1f, 0x38, 0x07,
  349. !    0xcc, 0x0c, 0x18, 0x06};
  350. diff -c xinvaders.old/vader3b.bit xinvaders/vader3b.bit
  351. *** xinvaders.old/vader3b.bit    Fri Jul 13 10:09:36 1990
  352. --- xinvaders/vader3b.bit    Tue Aug  7 10:02:36 1990
  353. ***************
  354. *** 1,5 ****
  355. ! #define vader3b_width 12
  356.   #define vader3b_height 8
  357.   static char vader3b_bits[] = {
  358. !    0xf0, 0x00, 0xfe, 0x07, 0xff, 0x0f, 0x67, 0x0e, 0xff, 0x0f, 0x9c, 0x03,
  359. !    0x66, 0x06, 0x03, 0x0c};
  360. --- 1,5 ----
  361. ! #define vader3b_width 14
  362.   #define vader3b_height 8
  363.   static char vader3b_bits[] = {
  364. !    0xe0, 0x01, 0xfc, 0x0f, 0xfe, 0x1f, 0xce, 0x1c, 0xfe, 0x1f, 0x38, 0x07,
  365. !    0xcc, 0x0c, 0x06, 0x18};
  366. diff -c xinvaders.old/vaders.c xinvaders/vaders.c
  367. *** xinvaders.old/vaders.c    Tue Jul 17 14:16:44 1990
  368. --- xinvaders/vaders.c    Tue Aug  7 10:53:25 1990
  369. ***************
  370. *** 54,68 ****
  371.   
  372.   extern Base base;
  373.   
  374.   #define PointInVader(vader, x, y)    \
  375. !   (x >= (vader)->x && y >= (vader)->y &&        \
  376. !    x <= (vader)->x + (vader)->width  && y <= (vader)->y + (vader)->height)
  377.   
  378. - #define VaderNearBox(vader, minx, miny, maxx, maxy)    \
  379. -   ((vader)->x <= minx && maxx <= (vader)->x + (vader)->width && \
  380. -    (vader)->y <= miny && maxy <= (vader)->y + (vader)->height)
  381.   static void PaintVader(vader, gc)
  382.        Vader vader;
  383.        GC gc;
  384. --- 54,66 ----
  385.   
  386.   extern Base base;
  387.   
  388. + /* indicates pad around vader bitmap for better collision detection */
  389. + #define VADERPAD     1
  390.   #define PointInVader(vader, x, y)    \
  391. !   (x >= (vader)->x+VADERPAD && y >= (vader)->y &&        \
  392. !    x <= (vader)->x + (vader)->width-VADERPAD  && y <= (vader)->y + (vader)->height)
  393.   
  394.   static void PaintVader(vader, gc)
  395.        Vader vader;
  396.        GC gc;
  397. ***************
  398. *** 187,193 ****
  399.           ShotHitsBuilding(vader->x+vader->width, vader->y+vader->height);
  400.         else
  401.           ShotHitsBuilding(vader->x, vader->y+vader->height);
  402. -       PaintVader(vader, backgc);
  403.         vader->x += vader->vx;
  404.         if ((vader->x < (VADERWIDTH-vader->width)/2 && vader->vx < 0) || 
  405.             (vader->x > gamewidth-VADERWIDTH && vader->vx > 0))
  406. --- 185,190 ----
  407. ***************
  408. *** 222,233 ****
  409.   {
  410.     unsigned int width, height;
  411.     int x_hot, y_hot;
  412. !   char *data, filename[30];
  413.     int i, j, status;
  414.   
  415.     for (i = 0; i < NUMTYPES; i++)
  416.       for (j = 0; j < 2; j++) {
  417. !       sprintf(filename, "vader%d%s.bit", (i+1), (j ? "b" : "a")); 
  418.         status = XmuReadBitmapDataFromFile (filename,
  419.                         &width, &height, &data,
  420.                         &x_hot, &y_hot);
  421. --- 219,230 ----
  422.   {
  423.     unsigned int width, height;
  424.     int x_hot, y_hot;
  425. !   char *data, filename[255];
  426.     int i, j, status;
  427.   
  428.     for (i = 0; i < NUMTYPES; i++)
  429.       for (j = 0; j < 2; j++) {
  430. !       sprintf(filename, "%svader%d%s.bit", bitdir, (i+1), (j ? "b" : "a")); 
  431.         status = XmuReadBitmapDataFromFile (filename,
  432.                         &width, &height, &data,
  433.                         &x_hot, &y_hot);
  434.  
  435. diff -c xinvaders.old/vaders.h xinvaders/vaders.h
  436. *** xinvaders.old/vaders.h    Wed Aug  1 11:27:28 1990
  437. --- xinvaders/vaders.h    Tue Aug  7 10:47:43 1990
  438. ***************
  439. *** 86,91 ****
  440. --- 86,93 ----
  441.    * Actual vaders definitions.
  442.    */
  443.   
  444. + ext char *bitdir;
  445.   ext Boolean debug;
  446.   ext int level;
  447.   
  448. ***************
  449. *** 93,99 ****
  450.   ext Window gamewindow;
  451.   ext VadersWidget gamewidget;
  452.   ext int gamewidth, gameheight;
  453. ! ext Widget toplevel, scorewidget;
  454.   ext int score;
  455.   ext int basesleft;
  456.   
  457. --- 95,101 ----
  458.   ext Window gamewindow;
  459.   ext VadersWidget gamewidget;
  460.   ext int gamewidth, gameheight;
  461. ! ext Widget toplevel;
  462.   ext int score;
  463.   ext int basesleft;
  464.   
  465. diff -c xinvaders.old/widget.c xinvaders/widget.c
  466. *** xinvaders.old/widget.c    Wed Aug  1 11:27:35 1990
  467. --- xinvaders/widget.c    Tue Aug  7 10:12:41 1990
  468. ***************
  469. *** 14,20 ****
  470. --- 14,24 ----
  471.   /* widget.c -- handle things that make the playing field behave as a widget. */
  472.   
  473.   #include "vaders.h"
  474. + #ifndef X11R3
  475.   #include <X11/Xaw/Paned.h>
  476. + #else
  477. + #include <X11/VPaned.h>
  478. + #endif
  479.   
  480.   typedef struct _BaseRec {
  481.     int x;            /* Location. */
  482.  
  483. diff -c xinvaders.old/xinvaders.ma xinvaders/xinvaders.ma
  484. *** xinvaders.old/xinvaders.ma    Wed Aug  1 12:33:15 1990
  485. --- xinvaders/xinvaders.ma    Tue Aug  7 11:18:20 1990
  486. ***************
  487. *** 1,5 ****
  488.   .\" Man page for xinvaders, by Jonny Goldman.
  489. ! .TH XInvaders 1 "Jul 17 1990"
  490.   .SH NAME
  491.   \fIXInvaders\fR \- Shoot-em-up them nasty little bugs.
  492.   .SH SYNOPSIS
  493. --- 1,5 ----
  494.   .\" Man page for xinvaders, by Jonny Goldman.
  495. ! .TH XInvaders 1.1 "Aug 7 1990"
  496.   .SH NAME
  497.   \fIXInvaders\fR \- Shoot-em-up them nasty little bugs.
  498.   .SH SYNOPSIS
  499. ***************
  500. *** 10,15 ****
  501. --- 10,18 ----
  502.   is an implementation of the old Atari Space Invaders game, on top of the
  503.   X11 window system.
  504.   
  505. + .SH PATCH LEVEL
  506. + xinvaders is now at Patch Level 1
  507.   .SH PLAYING XINVADERS
  508.   The game will start with all the invaders drawn.  Press 'p' to play, and
  509.   you're off.
  510. ***************
  511. *** 114,119 ****
  512. --- 117,123 ----
  513.   Here's an example of some of the resources you can set (this would be in
  514.   your .Xdefaults file):
  515.   
  516. +  Vaders*BitmapDirectory:        ./
  517.    Vaders*defaultfore:            black
  518.    Vaders*defaultback:            white
  519.    Vaders*Vader1Color:            blue
  520. ***************
  521. *** 144,152 ****
  522.   .SH BUGS
  523.   
  524.   The buildings aren't as good as the arcade, but hey, whatdayawant for free?
  525. ! You also must be in the same directory as the executable for the images to
  526. ! load properly.  It also doesn't handle auto-repeat very well, so you should
  527. ! probably turn it off.
  528.   
  529.   .SH COPYRIGHT
  530.   
  531. --- 148,155 ----
  532.   .SH BUGS
  533.   
  534.   The buildings aren't as good as the arcade, but hey, whatdayawant for free?
  535. ! It also doesn't handle auto-repeat very well, so you should probably turn
  536. ! it off.
  537.   
  538.   .SH COPYRIGHT
  539.  
  540. dan
  541. ----------------------------------------------------
  542. O'Reilly && Associates   argv@sun.com / argv@ora.com
  543. Opinions expressed reflect those of the author only.
  544.